package collection.map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class HashMapDemo {
    public static void main(String[] args) {
        // 创建HashMap
        Map<String, Integer> scores = new HashMap<>();

        // 添加键值对
        scores.put("张三", 90);
        scores.put("李四", 85);
        scores.put("王五", 95);
        scores.put("张三", 92); // 键重复，覆盖值
        System.out.println("HashMap内容：" + scores);

        // 获取值
        int zhangScore = scores.get("张三");
        System.out.println("张三的分数：" + zhangScore);

        // 获取不存在的键（返回null）
        Integer liuScore = scores.get("刘六");
        System.out.println("刘六的分数：" + liuScore);

        // 判断是否包含键/值
        boolean hasLi = scores.containsKey("李四");
        boolean has95 = scores.containsValue(95);
        System.out.println("是否包含李四：" + hasLi + "，是否包含95分：" + has95);

        // 遍历Map
        System.out.println("\n遍历键值对：");
        // 方式1：遍历键集
        Set<String> keys = scores.keySet();
        for (String key : keys) {
            System.out.println(key + "：" + scores.get(key));
        }

        // 方式2：遍历entry集（更高效）
        for (Map.Entry<String, Integer> entry : scores.entrySet()) {
            System.out.println(entry.getKey() + "：" + entry.getValue());
        }

        // 删除键值对
        scores.remove("李四");
        System.out.println("\n删除李四后：" + scores);

        // 集合大小
        System.out.println("元素数量：" + scores.size());
    }
}
